package com.shujia.scala

import java.io.{BufferedReader, FileReader}
import java.sql.DriverManager

import scala.io.{BufferedSource, Source}

object Demo5base {

  def main(args: Array[String]): Unit = {


    /**
      * 变量
      *
      * val: 常量，不能再指向其它的对象，相当于java中给变量增加final修饰
      * var ：变量，可以再指向其它的对象
      *
      * 一般尽量使用val
      */

    val i: Int = 100

    println(i)

    val j = i + 1

    println(j)

    //不能指向其它对象
    // i = 200

    var a = 200
    a = 300
    println(a)


    /**
      * 类型推断
      */

    //自动推断类型
    val str1 = "java"

    //手动加上类型
    val str2: String = "java"

    //堕胎，父类的引用指向子类的对象
    val str3: Object = "java"


    /**
      * 类型转换
      *
      * 在scalaHon只要你确定类型转换没有问题，都可以直接to
      *
      */

    val s: String = "100"


    //java中类型转换
    val si: Int = Integer.parseInt(s)

    //scala中的类型转换
    //隐式转换： 可以给对象动态增加方法
    val sj: Int = s.toInt

    println(sj)


    /**
      * 文件读写
      *
      */

    val fileReader = new FileReader("scala/data/students.txt")

    val bufferedReader = new BufferedReader(fileReader)


    //读取第一行
    var line: String = bufferedReader.readLine()

    //判断是否为空
    while (line != null) {
      println(line)

      //读取下一行
      line = bufferedReader.readLine()
    }
    bufferedReader.close()


    println("=" * 100)

    /**
      * scala中读取文件
      *
      */

    val source: BufferedSource = Source.fromFile("scala/data/students.txt")


    /** *
      * 迭代器的数据可能并没有完全加载到内存中
      *
      *
      * 迭代器只能迭代一次
      *
      */

    //读取所有行，返回一个迭代器
    val lines: Iterator[String] = source.getLines()


    //循环遍历迭代器
    for (line <- lines) {
      println(line)
    }

    println("=" * 100)

    //链式调用
    val liness = Source
      .fromFile("scala/data/students.txt")
      .getLines()

    /**
      *
      * JDBC:使用方式和java中美欧区别
      *
      */


    //1、加载驱动
    Class.forName("com.mysql.jdbc.Driver")


    //2、创建链接
    val con = DriverManager.getConnection("jdbc:mysql://master:3306/student", "root", "123456")

    //查询数据
    println(con)


    /**
      * 字符串拼接
      *
      */

    val k = 100


    //底层就是stringBuilder
    val ss = s"java,asdasda,$k"

    println(ss)


    //java的方式

    val stringBuilder = new StringBuilder

    stringBuilder.append("java")
    stringBuilder.append(k)

    println(stringBuilder.toString())


  }

}
